With its greater storage capacity over RAM for the same physical space (density) and faster read access time (speed) over rotating hard disk drives (HDDs), for example, it is becoming increasingly desirable to use flash memory (e.g., NAND flash) over traditional storage for systems requiring high-capacity, high bandwidth/throughput storage. For example, an on-demand video delivery system can require high-capacity, high bandwidth storage in its video servers. The video servers of an on-demand video delivery system can require a large amount of storage to store large video libraries. Also, the video servers can require high bandwidth/throughput to support numerous streams of video to end users. Thus, it can be desirable to implement a video server using flash memory.
However, the duration and reliability of a flash block can degrade with each write/erase operation to the flash block and eventually data no longer can be written to or reliably retained on the flash block. There is a limit to the number of write/erase operations that a flash block can perform before the flash block becomes unusable or unreliable. Furthermore, the read throughput of a flash block can decrease with increased write/erase operations to the flash block. Accordingly, flash performance and reliability may degrade in systems requiring a large number of write/erase operations.
In an on-demand video delivery system, one central video server storing a large library of videos can serve end users in a geographical area. However, this architecture can result in an undesirable amount of network traffic between the central video server and the video servers that serve the end users as the central video server transmits requested videos to the video servers for delivery to end users.
Alternative on-demand video delivery systems attempt to reduce network traffic and traffic delay between the central video server and the video servers by storing smaller video libraries in the video servers. Each video server can store the most requested videos by the end users served by the video server. If a video requested by an end user is not stored in the video server that serves the end user, the video server can request and receive the video from the central video server. The video server then can replace one of the least requested videos stored in the video server with the newly requested video. In this way, the video server can act as a cache. Thus, the storage in video servers is constantly changing as newly requested videos are written to video servers and the least requested videos are erased. Although it can be desirable to implement a video server with flash memory, the performance and reliability of flash may degrade in existing video servers because existing video servers require a large number of write operations.